Processing units, such as CPUs and GPUs, may be configured to process a group of threads in parallel. One or more threads in each group of threads may, upon execution by a processing unit, generate a memory request, such as a read request or a write request. Memory requests may be grouped into batches of memory requests.